import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase padre de los Checkpoints, éstos acumulan puntos para los objetos StarFox
 * 
 * @author Luis Guajardo Olvera
 * @author Daniel Romero Martí
 */
public abstract class  Checkpoints extends Actor
{   private int profundidad;
    private int aumentaTam;
    private int puntos;
    private boolean bandera;

    /**
     * Regresa el valor de la variable profundidad
     */
    public int profundidad()
    {
        return profundidad;
    }
    
    /**
     * Modifica el valor de la variable profundidad
     */
    public void profundidad(int cant)
    {
        profundidad=cant;
    }

    /**
     * Regresa el valor de la variable aumentaTam
     */
    public int aumentaTam()
    {
        return aumentaTam;
    }
   
    /**
     * Modifica el valor de la variable aumentaTam
     */
    public void aumentaTam(int cant)
    {
        aumentaTam = cant;
    }
    
    /**
     * Regresa el valor de la variable puntos
     */
    public int puntos()
    {
        return puntos;
    }
    
    /**
     * Modifica el valor de la variable puntos
     */
    public void puntos(int cant)
    {
        puntos=cant;
    }

    /**
     * Regresa el valor de la variable bandera
     */
    public boolean bandera()
    {
        return bandera;
    }

    /**
     * Constructor de la clase Checkpoints
     */
    public Checkpoints()
    { 
        aumentaTam=8;
        profundidad=0;
        bandera=false;
    }

    /**
     * Act - do whatever the Checkpoints wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act(int unaCant) 
    {   
        sumaPuntos(unaCant);
        desaparece();
        escala();
        aumentaTam++;
    }

    /**
     * Verifica si la nave pasó por el centro de un Checkpoint
     * Hace el llamado para incrementar el puntaje de la nave
     */
    public void sumaPuntos(int unaCant)
    {
        World mundoTierra;
        mundoTierra = getWorld();
        java.util.List naves = mundoTierra.getObjects(StarFox.class);
        StarFox nave = (StarFox)naves.get(0);
        GreenfootImage imagen = getImage();
        int width,height,izq,der,arr,aba;
        width = imagen.getWidth();
        height = imagen.getHeight();
        izq= getX()-(width/2)+5;
        der= getX()+(width/2)-5;
        arr= getY()-(height/2)+5;
        aba= getY()+(height/2)-5;
        int naveX,naveY;
        naveX=nave.getX();
        naveY=nave.getY();
        if(naveX>izq && naveX<der && naveY>arr && naveY<aba && profundidad==nave.profundidad() && bandera==false)
        {
            nave.aumentaPuntos(unaCant);
            bandera=true;
        }
    }

    /**
     * Método a ser redefinido
     */
    public abstract void escala();

    /**
     * Método a ser redefinido
     */
    public abstract void desaparece();

}
